home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac 1993 September / September 93.iso / Apple / Futures / Dylan / Dylan FAQ Mar93
Text File  |  1993-10-16  |  14KB  |  326 lines

  1. Dylan(tm) FAQ March 10, 1993
  2.  
  3. This memo answers questions which are frequently asked about the Dylan
  4. programming language.
  5.  
  6. The latest version of this memo is available by anonymous ftp from
  7. cambridge.apple.com in the file /pub/dylan/dylan-faq.txt. We expect to
  8. make other Dylan documents available for ftp from the same directory.
  9.  
  10. Changes since the last version of the FAQ are marked by the string '+++'.
  11.  
  12. The Dylan manual is not available in electronic form, but a bound copy
  13. may be requested by sending your name and address to
  14. dylan-manual-request@cambridge.apple.com.  (Applelink users should
  15. send to dylan-request@cambridge.apple.com@internet#.)  As of this writing,
  16. there is no charge for the manual.
  17.  
  18. If you want to keep up with Dylan news, consider joining the info-dylan
  19. mailing list, or the comp.lang.dylan newsgroup described below.
  20.  
  21.  
  22. *****General Questions About Dylan******
  23.  
  24. * What is Dylan?
  25.  
  26.   Dylan is a new Object Oriented Dynamic Language (OODL), developed by the
  27.   Eastern Research and Technology Lab of Apple Computer.  Dylan was
  28.   designed to make the advantages of OODLs available for commercial
  29.   programming on a variety of computing devices.
  30.  
  31.   Dylan most closely resembles CLOS and Scheme.  Other languages which
  32.   influenced the design of Dylan include Smalltalk, Self, and OakLisp.
  33.  
  34.   Dylan is consistently object-oriented.  It is not a procedural language
  35.   with an object-oriented extension.  To this end, Dylan does not attempt
  36.   to be compatible with any previously existing programming language.
  37.  
  38. * What is the target audience for Dylan?
  39.  
  40.   The target audience for Dylan is software application programmers, most
  41.   of whom are currently using static languages such as C and C++.
  42.   We realize that the current manual is more appropriate for people
  43.   already familiar with OODLs.  We have plans for additional documents
  44.   directed at static language programmers.
  45.  
  46. * How does Dylan differ from previous OODLs?
  47.  
  48.   Dylan is designed to allow the powerful and flexible programming
  49.   techniques and development environments associated with OODLs,
  50.   while also allowing the small, fast delivered applications currently
  51.   associated with static languages.
  52.  
  53.   Unlike many dynamic languages, Dylan's design consciously enables the
  54.   runtime environment to execute without the development environment
  55.   present. In addition, Dylan will let you selectively 'turn-off'
  56.   dynamic capabilities when they are no longer needed, allowing more
  57.   efficient compilation.
  58.  
  59. * Are there any public mailing lists for discussing Dylan?
  60.  
  61.   +++
  62.   Yes.  There are four mailing lists of interest to the public.  Three
  63.   of these lists are public forums, one is a one-way list for sending
  64.   comments to the Dylan group at Apple.  There is also an Internet
  65.   Newsgroup dedicated to Dylan.
  66.  
  67.   To subscribe to one of the public mailing lists, send mail to
  68.   majordomo@cambridge.apple.com.  The body of the message should be "subscribe
  69.   <list-name>", where <list-name> is the name of the mailing list you want to
  70.   subscribe to.  To unsubscribe to one of the mailing lists, send majordomo a
  71.   message with the body "unsubscribe <list-name>".  If you would like to
  72. subscribe
  73.   or unsubcribe an address which is different from the return address of your
  74.   message, include the address after the <list-name>.  For complete majordomo
  75.   instructions, send a message with the body "help".
  76.  
  77.   Please do not send administrative requests to the mailing lists!
  78.   If you have trouble with info-dylan, send mail to
  79. sysadmin@cambridge.apple.com
  80.  
  81.   The mailing lists associated with Dylan are:
  82.  
  83.   info-dylan@cambridge.apple.com
  84.   This is a two-way mailing list for discussing any and all issues
  85.   related to Dylan.  The contents of this mailing list are also
  86.   available through the newsgroup comp.lang.dylan.
  87.  
  88.   announce-dylan@cambridge.apple.com
  89.   This is a mailing list for major announcements about Dylan (new implement-
  90.   ation availability, new manual availability, etc).  This mailing list is
  91.   for people who want to keep up on Dylan news, but don't want the quantity
  92.   of mail that comes through info-dylan.
  93.  
  94.   dylan-builders@cambridge.apple.com
  95.   This is a two-way mailing list for people who are working on Dylan
  96.   implementations or who are considering working on an implementation.
  97.   If you want to join this list, please send mail describing your plans
  98.   to dylan-builders-request@cambridge.apple.com.
  99.  
  100.   dylan-comments@cambridge.apple.com
  101.   This is a one way mailing list for sending comments to the people working
  102.   on Dylan at Apple.  Most Dylan discussions can take place on info-dylan.
  103.  
  104. * Does Apple have an implementation of Dylan?
  105.  
  106.   Apple hasn't announced plans to release an implementation of Dylan.
  107.   However, we are working on implementations, and our implementation
  108.   efforts have been an important proving ground for the Dylan design.
  109.  
  110. * Will there be Apple products based on Dylan?
  111.  
  112.   Apple has not announced any use of Dylan in products.
  113.  
  114. * Is Dylan related to the Apple PDA project called Newton?
  115.  
  116.   Dylan is being created by Apple's Advanced Technology Group, and no
  117.   product-specific implementations of Dylan have been announced yet.
  118.   If you are looking for more information on Newton development, you need to
  119.   contact the Newton Developer Relations at NEWTON.DEVS@applelink.apple.com
  120.  
  121. * Are there third-party implementations of Dylan available?
  122.  
  123.   Several third-parties have expressed interest in implementing
  124.   Dylan.  A group at DEC has succeeded in implementing a language
  125.   based on the Dylan manual.  They describe it as follows:
  126.  
  127.       Thomas, a compiler written at Digital Equipment Corporation's
  128.       Cambridge Research Laboratory, is now available to the
  129.       public.  Thomas compiles a language compatible with the
  130.       language described in the book "Dylan(TM) an object-oriented
  131.       dynamic language" by Apple Computer Eastern Research and
  132.       Technology, April 1992.
  133.  
  134.       The Thomas system is written in Scheme and is available to
  135.       run under any one of three public implementations of Scheme:
  136.       MIT's CScheme, DEC's Scheme->C, and Marc Feeley's Gambit.  It
  137.       can run on a wide range of machines including the Macintosh,
  138.       PC compatibles, Vax, MIPS, Alpha, and 680x0.  Thomas
  139.       generates IEEE compatible Scheme code.  The entire system
  140.       (including sources) is available by anonymous ftp from:
  141.  
  142.              crl.dec.com:pub/DEC/Thomas
  143.              gatekeeper.pa.dec.com:pub/DEC/Thomas
  144.              altdorf.ai.mit.edu:archive/Thomas
  145.  
  146.   We've also made Thomas available in the Dylan ftp directory at
  147.   cambridge.apple.com.
  148.  
  149.   Thanks to Marc Feeley, Thomas embedded in Gambit is now available
  150.   as a stand-alone Macintosh application.  We've placed this in the
  151.   ftp directory on cambridge.apple.com.
  152.  
  153. * Is Dylan a proprietary language?  Why is the Dylan name trademarked?
  154.  
  155.   We want Dylan to be available on as many computers as possible.  To this
  156.   end, we are encouraging groups outside Apple to implement Dylan.
  157.  
  158.   It is our intention to license the Dylan trademark to any implementation
  159.   which passes a standard test suite.  The purpose of the trademark is to
  160.   ensure quality and consistency among implementations.
  161.  
  162. * What should I do if I want to implement Dylan?
  163.  
  164.   Send mail to dylan-builders-request@cambridge.apple.com.  We are
  165.   putting together a program to support implementors, and we want to hear
  166.   from you.  (Applelink users should send mail to
  167.   d-builders-req@applelink.apple.com@internet#.)
  168.  
  169.   If you've written an implementation of Dylan and want to release it,
  170.   please contact us for a trademark license.
  171.  
  172. * Is the Dylan language design frozen?
  173.  
  174.   We don't plan changes to the general structure of the language, but we
  175.   expect to continue working on the details.  We also expect to specify
  176.   some extensions and libraries.
  177.  
  178.   We welcome your comments on the Dylan design.  Your feedback is very
  179.   important to the further evolution of the language.  We haven't
  180.   specified a limited review period.
  181.  
  182.   Please understand that because of the amount of mail we are receiving,
  183.   we may not be able to respond to your message in detail.
  184.  
  185. * Are design clarifications available?
  186.  
  187.   We are working on design clarifications.  They will be made available
  188.   via anonymous ftp from cambridge.apple.com.
  189.  
  190. * Is there a group which promotes the use of object-oriented dynamic
  191.   languages?
  192.  
  193.   Yes.  There is an OODL special interest group of MADA.  MADA is a group
  194.   which champions object-oriented programming on the Macintosh.  The OODL
  195.   sig is currently focusing on Macintosh Common Lisp, but it intends to
  196.   expand to other languages and environments.
  197.  
  198.   To subscribe to the OODL sig mailing list from Applelink send mail to
  199.   OODL.SIG. Internet subscriptions should be requested from
  200.   oodl-sig-request@cambridge.apple.com.
  201.  
  202.  
  203. *****Questions about the Dylan Language Design******
  204.  
  205.  
  206. * Is Apple planning to specify an alternate syntax for Dylan?
  207.  
  208.   Yes.  We recognize that many people prefer an algebraic syntax, and
  209.   we plan to create and document such a syntax for Dylan.
  210.  
  211. * Are there plans to specify a standard i/o package for Dylan?
  212.  
  213.   Simple i/o will probably be specified in an optional library, rather
  214.   than in the core language.  A single i/o system wouldn't make sense on
  215.   all computing devices because of the variation in user interfaces and
  216.   storage systems.
  217.  
  218. * Will Dylan specify a standard threading mechanism?
  219.  
  220.   We recognize that threads are important and that most implementations of
  221.   Dylan will support them.  We haven't yet decided whether a standard
  222.   thread mechanism would be appropriate for all platforms.
  223.  
  224. * Why is 'make' allowed to return a previously allocated instance, or an
  225.   object which is an indirect instance of the class passed to 'make'?
  226.  
  227.   We feel that this is a very important abstraction mechanism.  A class
  228.   should have flexibility in how it implements 'make', as long as the object
  229.   returned fulfills the protocol of the class.
  230.  
  231.   For example, this allows a library to document a single abstract class
  232.   which is supported by several undocumented implementation classes. The
  233.   abstract class can choose which implementation class to instantiate
  234.   based on the additional arguments to 'make'.  This allows optimizations
  235.   which are transparent to the clients of the library.
  236.  
  237.   The default method for 'make' of a user-defined class returns a fresh
  238.   direct instance of the requested class.
  239.  
  240. * The Dylan manual doesn't require implementations to optimize tail
  241.   recursion. Was this an intentional omission, or an editorial oversight?
  242.  
  243.   It was an editorial oversight.  Dylan implementations will be required
  244.   to be properly tail recursive.
  245.  
  246. * The Dylan manual doesn't say much about modules.  Will this be
  247.   specified in the future?
  248.  
  249.   Dylan modules will be further specified in an upcoming design note.
  250.   At this time we expect modules to exist only at compile-time, not at
  251.   runtime.  Non-portable extensions may support runtime module operations.
  252.  
  253. * Can the 'method' special form be used to create closures?
  254.  
  255.   Yes.
  256.  
  257. * I don't understand how setter variables work.  Is 'setter' a special
  258.   form?
  259.  
  260.   'setter' just provides an alternate way to spell variable names.  For
  261.   example, the following are all legal spellings of variable names:
  262.  
  263.     foo
  264.     bar
  265.     (setter foo)
  266.     (setter quux)
  267.  
  268.   'setter' is pure syntax, and nothing more.  It's probably unnecessarily
  269.   confusing to make setter variables look like function calls.  For this
  270.   reason, we are considering changing the syntax of setter variables.
  271.  
  272. * Why not just have 'setter' be a function which takes a getter function
  273.   as an argument and returns the corresponding setter function?
  274.  
  275.   If we did this, the action of exporting a getter function would
  276.   automatically export the setter as well.  We believe that it's important
  277.   to allow the getter and setter to be exported and imported independently.
  278.   The design of setter variables allows this.
  279.  
  280. * What kind of object is used to return multiple values?
  281.  
  282.   When a function returns multiple values, the return values are not
  283.   stored in a wrapper object;  they are returned directly.  For example,
  284.   if a function returns "the values 4 and 5", it returns two integers.  It
  285.   does not return a data structure which contains two integers.
  286.  
  287.   Returning multiple values is similar to calling a function with more
  288.   than one argument.  When passing multiple objects as arguments to a
  289.   function, the objects do not have to be stored in a single data
  290.   structure before they are passed.
  291.  
  292. * Is the specification of sealing complete?
  293.  
  294.   No.  We expect the specification of sealing to evolve as we gain
  295.   implementation experience.
  296.  
  297.   At this point, we believe that sealing operations should be expressed
  298.   declaratively, as compile-time operations, rather than as run-time
  299.   operations.  In the Dylan manual they are described as run-time operations.
  300.  
  301. * Will Dylan include 'eval'?
  302.  
  303.   Some implementations may choose to support 'eval', but we do not have
  304.   plans to add it to the language standard.  We feel that the delivery
  305.   of applications which are space efficient requires the separation of
  306.   development time activity from runtime activity.
  307.  
  308. * Will Dylan include an application framework?
  309.  
  310.   We recognize the value of application frameworks, especially cross-
  311.   platform application frameworks.  Unfortunately, because of the great
  312.   variation in computing platforms, a single application framework will
  313.   not be part of the Dylan language.  On each platform, there should either
  314.   be a Dylan-specific application framework, or Dylan should be able to use
  315.   application frameworks written in other languages.
  316.  
  317. * Will Dylan interface to other languages?
  318.  
  319.   We recognize that seamless integration with other languages, especially
  320.   C and C++, is essential.  We are working on addressing this issue.  The
  321.   solutions may not be part of the Dylan language proper.
  322.  
  323. Developer Services Bulletin Board
  324. 4-7-93
  325.  
  326.